package com.fg.cloud.manager.service.product;


import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

import com.fg.cloud.common.PageUtils;
import com.fg.cloud.common.Result;
import com.fg.cloud.common.ServiceException;
import com.fg.cloud.manager.entry.product.ProductInfoEntity;
import com.fg.cloud.manager.entry.product.ProductSkuEntity;
import com.fg.cloud.manager.entry.product.vo.ProductInfoVo;
import com.fg.cloud.manager.entry.product.vo.ProductSkuVo;
import com.fg.cloud.manager.service.BaseService;

/**
 * @author liushengchao
 * @Description: TODO 
 * @date 2017年6月26日上午10:32:16
 *
 */
public interface ProductInfoService extends BaseService{
	
	public boolean find(Long proId, Long facId);
	
	/**
	 * Description:商品数据重置
	 * @param facId
	 * @return
	 * @author dingjiang
	 * @date 2017年11月6日下午5:28:04
	 */
	boolean deleteProduct(Long facId);
	
	/**
	 * @Description: 商品批量上下架处理 
	 * @param ids 商品ID字符串
	 * @param isGround 上下架状态
	 * @return int
	 * @author liushengchao
	 * @date 2017年6月27日上午9:12:53
	 * @throws 
	 *
	 */
	public int productUpperAndLower(@Param("ids")String ids , @Param("isGround")int isGround);
	
	/**
	  * Description:根据商品名称和厂商ID查询商品信息。
	  * @param productName 商品名称
	  * @param facId 厂商ID
	  * @return  商品信息实体
	  * @author liushengchao
	  * @date 2017年8月1日上午9:05:07
	 */
	public ProductInfoEntity getProductByName(@Param("productName")String productName,@Param("facId")Long facId);
	
	/**
	  * Description:搜索框输入查询条件查询商品信息
	  * @param condition 查询条件
	  * @param isGround 上下架状态
	  * @return  商品详情信息
	  * @author liushengchao
	  * @date 2017年8月2日下午3:48:51
	 */
	public List<ProductSkuEntity> selectByCondition(@Param("pageinfo")PageUtils<ProductSkuEntity> pageinfo);
	
	/**
	  * Description:高级搜索
	  * @param pageinfo 商品搜索条件
	  * @return 搜索结果列表
	  * @author liushengchao
	  * @date 2017年8月7日下午4:21:51
	 */
	public List<ProductSkuEntity> advSearch(@Param("pageinfo")PageUtils<ProductSkuEntity> pageinfo);
		
	/**
	  * Description:逻辑删除商品
	  * @param productId 商品ID
	  * @return
	  * @author liushengchao
	  * @date 2017年8月7日下午4:22:42
	 */
	public Result deleteProduct(Long productId,Long skuId,boolean isDelProduct);
	
	/**
	 * 获取搜索结果条目数
	  * Description:TODO
	  * @param pageinfo 分页信息
	  * @return
	  * @author liushengchao
	  * @date 2017年8月15日下午4:16:25
	 */
	public Long count(PageUtils<ProductSkuEntity> pageinfo);
	
	/**
	 * 获取搜索框搜索结果条目
	  * Description:TODO
	  * @param pageinfo 分页信息
	  * @return
	  * @author liushengchao
	  * @date 2017年8月15日下午4:17:09
	 */
	public Long countTop(PageUtils<ProductSkuEntity> pageinfo);
	
	/**
	  * Description:添加商品信息
	  * @param product 商品信息实体
	  * @param facId 厂商ID
	  * @throws ServiceException
	  * @author liushengchao
	  * @date 2017年8月22日下午3:57:25
	 */
	public Result addProduct(ProductInfoEntity product,Long facId) throws ServiceException;
	
	/**
	  * Description:商品新息修改
	  * @param product 商品信息实体
	  * @param facId 厂商ID
	  * @throws ServiceException
	  * @author liushengchao
	  * @date 2017年8月24日下午4:01:37
	 */
	public Result modifyProduct(ProductInfoEntity product,Long facId) throws ServiceException;
	
	
	public Result batchDelete(String ids);
	
	void findBaseProductInfo(PageUtils<ProductInfoVo> pageinfo);
	
	List<ProductSkuEntity> selectByProductNumber(@Param("productNumber")String productNumber,
			@Param("facId")Long facId,@Param("productId")Long productId);
	
	public List<ProductSkuVo> selectForOder(List<Map<String,Long>> skuIdList,Long ageId,String tableName);
}
